# -*- coding: utf-8 -*-
"""
Module Description: 版本号方法
Date: 2018/9/3
Author: FQ
Desc: 版本号格式: 1.8.1.0 兼容 float类型 eg: 1.81
"""
from pyshare.core.context import action_context_storage
from common import service_config


def get_default_version():
    """
    获取服务端默认版本号
    :return:
    """
    return service_config.VersionControl.server_version()


def get_action_version():
    """
    获取接口上下文中的版本号
    :return:
    """
    if action_context_storage.ctx is not None:
        return action_context_storage.ctx.ver
    return None


def format_version(ver):
    """
    格式化处理版本号
    :param ver:
    :return:
    """
    if isinstance(ver, basestring):
        return ver.split('.')
    elif isinstance(ver, float):
        return str(ver).split('.')
    else:
        raise Exception('Version Type Error')


def get_main_version(ver=None):
    """
    获取主版本号 eg 1.9 2.0 ...
    :param ver: 可外部传入，默认获取上下文中的版本号
    :return:
    """
    if ver is None:
        ver = get_action_version()
    ver_list = format_version(ver)
    if not ver_list:
        raise Exception('Version Length Error')
    if len(ver_list) >= 2:
        return float(".".join([ver_list[0], ver_list[1][0]]))
    return float(".".join([ver_list[0], '0']))


def check_main_version(check_ver):
    """
    检测接口版本号是否大于等于check_ver版本号
    :param check_ver: type float
    :return:
    """
    ver = get_main_version()
    return True if ver >= check_ver else False
